package ding.blog.dao;


import com.example.myblog.entity.Article;
import com.example.myblog.entity.Comment;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;

// 继承JpaRepository，这里第一个泛型是实体类类型，第二个泛型是实体类主键的类型
public interface ArticleRepository extends JpaRepository<Article, Long> {

    // 根据文章标题模糊查询文章列表
    List<Article> findByTitleContaining(String title);

    // 根据文章分类查询文章列表
    List<Article> findByCategory(String category);

    // 根据用户名查询该用户发布的所有文章
    List<Article> findByUserName(String userName);

    // 自定义查询，查询浏览量大于指定值的文章列表，使用JPQL（Java Persistence Query Language）
    @Query("SELECT a FROM Article a WHERE a.views > :views")
    List<Article> findArticlesWithViewsGreaterThan(@Param("views") String views);

    // 自定义查询，查询点赞数大于指定值且属于特定分类的文章列表，使用JPQL
    @Query("SELECT a FROM Article a WHERE a.likes > :likes AND a.category = :category")
    List<Article> findArticlesWithLikesGreaterThanAndCategory(@Param("likes") String likes, @Param("category") String category);

    // 根据文章获取评论
    List<Comment> findByArticle(Article article);
}